package com.reggie.employee.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.reggie.employee.dao.EmployeeDao;
import com.reggie.employee.entity.Employee;
import com.reggie.configuration.common.Result;
import com.reggie.employee.service.EmployeeService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.reggie.configuration.common.tableList;

/**
 * 为什么要继承那个类实现那个接口？   我是个傻逼，这是service的实现类所以接口的问题解决了
 * 目前不太清楚
 * 点进去发现ServiceImpl的参数带有要继承basemapper的子类，而basemapper里面是有一些定义好的sql语句的，继承了这个类应该就把sql语句也继承过来了，可以直接省略调用dao层
 *
 */
@Service
public class EmployeeServiceimpl extends ServiceImpl<EmployeeDao, Employee> implements EmployeeService {

    @Autowired
    private EmployeeDao dao;

    @Override
    public Result<tableList> selectByCondition(Integer page, Integer pageSize, String name) {
        //IPage这个是MyBatisPlus带的类，用于分页查询用
        IPage currentPage = new Page(page == null? 1 : page,pageSize == null? 10 : pageSize);
        /*
        currentPage.setCurrent(page == null? 1 : page);
        currentPage.setSize(pageSize == null? 10 : pageSize);
        */
        //这里的尖括号一定不能少。少了会报错，也许是因为泛型没有传递过来
        LambdaQueryWrapper<Employee> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        if (StringUtils.isNotBlank(name)){
            lambdaQueryWrapper.like(Employee::getName,name);
        }

        IPage result = dao.selectPage(currentPage, lambdaQueryWrapper);
            //我一直搞错了，Result这个通用结果集有data属性，直接就可以把任何数据都传进去，前端需要都就是data调用
        return Result.success(new tableList(result.getRecords(),result.getTotal()));
    }

}
